package com.ruoyix.im.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyix.common.core.domain.PageQuery;
import com.ruoyix.common.core.domain.R;
import com.ruoyix.common.core.page.TableDataInfo;
import com.ruoyix.im.domain.ImChatUserFriend;
import com.ruoyix.im.domain.bo.ImChatUserFriendBo;
import com.ruoyix.im.domain.vo.ImChatUserFriendVo;
import com.ruoyix.im.domain.vo.UserFriendVO;


import java.util.Collection;
import java.util.List;

/**
 * 好友Service接口
 *
 * @author ruoyi
 * @date 2024-05-27
 */
public interface IImChatUserFriendService extends IService<ImChatUserFriend> {

    /**
     * 查询好友
     */
    ImChatUserFriendVo queryById(Long id);

    /**
     * 查询好友列表
     */
    TableDataInfo<ImChatUserFriendVo> queryPageList(ImChatUserFriendBo bo, PageQuery pageQuery);

    /**
     * 查询好友列表
     */
    List<ImChatUserFriendVo> queryList(ImChatUserFriendBo bo);

    /**
     * 新增好友
     */
    Boolean insertByBo(ImChatUserFriendBo bo);

    /**
     * 修改好友
     */
    Boolean updateByBo(ImChatUserFriendBo bo);

    /**
     * 校验并批量删除好友信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    public R<Void> addFriend(Long friendId, String remark);

    public List<UserFriendVO> getUserFriendVOS(Long friendStatus);

    public R<Void> changeFriend(Long friendId, Long friendStatus, String remark);

    TableDataInfo<ImChatUserFriendVo> selectFriendsList(Long userId);
}
